package io.hd;

import java.sql.SQLException;
import javax.swing.JDialog;
import org.h2.message.DbException;
import org.h2.tools.Backup;
import org.h2.tools.Restore;

/**
 *
 * @author Mariano Zapata
 */
public class GestorRespaldo extends Thread {
    
    public static final int TIPO_CARGAR= 0;
    public static final int TIPO_CREAR= 1;
    private static final String BD= "ej_dat";
    private static final String DIRECTORIO= System.getProperty("user.dir");
    private int tipo;
    private String archivoZip;
    private JDialog dialogo;
    private GestorRespaldoListener listener;
    
    public GestorRespaldo(int tipo, String archivoZip, JDialog dialogo)
    {
        super("GestorRespaldo");
        this.tipo= tipo;
        this.archivoZip= archivoZip;
        this.dialogo= dialogo;
        listener= null;
    }
    
    @Override
    public void run()
    {
        try {
            Thread.sleep(1000);
        } catch (InterruptedException ex) {/*NADA*/}
        switch (tipo)
        {
            case TIPO_CARGAR: this.cargar(); break;
            case TIPO_CREAR: this.crear(); break;
        }
        dialogo.setVisible(false);
    }
    
    private void cargar()
    {
        try {
            Restore.execute(archivoZip, DIRECTORIO, null, true);
        } catch (DbException ex) {this.notificarError(ex.getMessage());}
    }
    
    private void crear()
    {
        try {
            Backup.execute(archivoZip, DIRECTORIO, BD, true);
        } catch (SQLException ex) {this.notificarError(ex.getMessage());}
    }
    
    public void agregarGestorRespaldoListener(GestorRespaldoListener grl) {listener= grl;}
    
    public void quitarGestorRespaldoListener() {listener= null;}
    
    private void notificarError(String msj)
    {
        if (listener != null)
            listener.gestorRespaldoEventoError(msj);
    }
}
